home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib11.dsk
/
FAT GRAPH.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
4KB
|
111 lines
10 REM **********************
11 REM * FAT GRAPH *
12 REM * BY CHRIS EXNER *
13 REM * COPYRIGHT (C) 1982 *
14 REM * BY MICRO-SPARC INC *
15 REM * LINCOLN, MA. 01773 *
16 REM **********************
190 LOMEM: 16385
200 D$ = CHR$(4)
250 DIM PEOPLE$(4),W(4,120),LAST(4)
300 TEXT : GOSUB 10000: REM FILE OPEN ROUTINE
400 REM ** ENTER NEW FAT FIGURES
500 HOME : PRINT TAB( 8);"* ENTER NEW FAT FIGURES *"
550 VTAB 6: PRINT "HIT RETURN TO END ENTRY"
600 VTAB 10: PRINT "NAME:"
700 VTAB 12: PRINT "WEIGHT:"
800 POKE 32,8: POKE 33,30
1200 VTAB 10: CALL -958: INPUT "";NAME$
1250 IF NAME$ = "" THEN POKE 32,0: POKE 33,40: GOTO 2000
1300 VTAB 12: INPUT "";WEIGHT
1400 VTAB 16: INPUT "ANY CORRECTIONS (Y/N)? ";ANS$
1500 IF ANS$ < >"Y" AND ANS$ < >"N" THEN 1400
1600 IF ANS$ = "Y" THEN GOTO 1200
1700 PRINT D$;"WRITE FAT FILE"
1800 PRINT NAME$
1850 PRINT WEIGHT
1900 PRINT D$: GOTO 1200
2000 REM **READ ALL FAT DATA
2100 PRINT D$;"CLOSE FAT FILE"
2200 PRINT D$;"OPEN FAT FILE"
2500 ONERR GOTO 3300
2600 PRINT D$;"READ FAT FILE"
2700 INPUT NAME$,WEIGHT
2800 REM ** DETERMINE THE I-VALUE FOR THE PERSON'S NAME
2900 GOSUB 15000
3000 REM ** LOAD RECORD INFO INTO ARRAYS
3100 W(I,LAST(I)) = WEIGHT
3150 LAST(I) = LAST(I) +1
3200 GOTO 2500
3300 IF PEEK(222) < >5 THEN PRINT "ERROR: "; PEEK(222): END
3350 PRINT D$;"CLOSE FAT FILE"
3500 REM ** ENTER GRAPH AXES DATA
3510 HOME : PRINT TAB( 8);"** SET-UP GRAPH AXES **"
3520 VTAB 6: PRINT " THE GRAPH PLOTS A 70 POUND RANGE."
3530 PRINT : INPUT " ENTER THE LOWEST WEIGHT: ";XMIN
3540 VTAB 12: HTAB 6: PRINT "PLOT FAT GRAPH FOR LAST"
3610 PRINT : HTAB 6: INPUT "6, 24, OR 120 DAYS: ";DTERANGE
3650 IF DTERANGE < >6 AND DTERANGE < >24 AND DTERANGE < >120 THEN GOTO 3610
3675 HOME : VTAB 21
3700 IF DTERANGE = 6 THEN XINC = 40: PRINT " 0 1 2 3 4 5 6"
3750 IF DTERANGE = 24 THEN XINC = 10: PRINT " 0 2 4 6 8 10 12 14 16 18 20 22 24";
3800 IF DTERANGE = 120 THEN XINC = 2: PRINT " 0 20 40 60 80 100 120";
3850 PRINT XMIN
3900 PRINT " COLORS: ";PEOPLE$(0);"=1, ";PEOPLE$(1);"=2, ";
3950 PRINT PEOPLE$(2);"=3, ";PEOPLE$(4);"=5, ";
3975 PRINT PEOPLE$(3);"=6";
4000 REM ** SET UP THE GRAPH LAYOUT
4100 HGR : HCOLOR= 7
4200 HPLOT 26,12 TO 268,12 TO 268,152 TO 26,152 TO 26,12
4300 HPLOT 27,13 TO 269,13 TO 269,153 TO 27,153 TO 27,13
4350 REM ** DRAW THE WEIGHT SCALE (Y-AXIS)
4400 FOR Y = 12 TO 152 STEP 20
4500 HPLOT 0,Y TO 21,Y
4600 HPLOT 10,Y +10 TO 21,Y +10
4650 FOR X = 28 TO 267 STEP 7: HPLOT X,Y: NEXT X
4700 NEXT Y
4750 REM ** DRAW THE DATE SCALE (X-AXIS)
4800 FOR X = 67 TO 267 STEP 40
4850 HPLOT X,154 TO X,159
4875 HPLOT X -10,154 TO X -10,155
4900 HPLOT X -20,154 TO X -20,157
4925 HPLOT X -30,154 TO X -30,155
4950 NEXT X
5000 REM ** PLOT THE WEIGHTS OF EACH PERSON ON FILE
5100 FOR I = 0 TO 4
5200 HCOLOR= I +1
5300 IF I = 3 THEN HCOLOR= 6
5400 XOLD = 0:YOLD = 0
5500 J = 0: IF DTERANGE <LAST(I) +1 THEN J = LAST(I) -(DTERANGE +1)
5600 FOR Z = 0 TO DTERANGE
5700 IF W(I,J) = 0 THEN GOTO 6500
5800 Y = ((XMIN +70) -W(I,J)) *2 +12
5850 IF Y <0 THEN Y = 0: IF Y >159 THEN Y = 159
5900 IF XOLD = 0 AND YOLD = 0 THEN X = 28: HPLOT X,Y: GOTO 6100
6000 HPLOT XOLD,YOLD TO X,Y
6100 XOLD = X:YOLD = Y
6200 X = X +XINC
6300 J = J +1
6400 NEXT Z
6500 NEXT I
6600 GET A$: END
9500 PRINT PEOPLE$(2);"=3, ";PEOPLE$(4);"=5";
10000 REM ** FILE OPEN ROUTINE
10100 HOME : VTAB 12: INPUT "STARTING A NEW FILE (Y/N)? ";ANS$
10200 IF ANS$ < >"N" AND ANS$ < >"Y" THEN 10100
10300 IF ANS$ = "N" THEN PRINT D$;"APPEND FAT FILE": RETURN
10350 PRINT : PRINT TAB( 8);"** WARNING **"
10400 PRINT "CREATING A NEW FILE WILL DESTROY"
10450 PRINT "ANY OLD WEIGHT DATA."
10500 PRINT : INPUT "CONTINUE (Y/N)? ";ANS$
10600 IF ANS$ < >"Y" THEN GOTO 10100
10700 PRINT D$;"OPEN FAT FILE"
10800 PRINT D$;"DELETE FAT FILE"
10900 PRINT D$;"OPEN FAT FILE"
11000 RETURN
15000 REM ** GET I-VALUE ROUTINE
15100 I = 0
15200 IF PEOPLE$(I) = NAME$ THEN RETURN
15300 IF PEOPLE$(I) = "" THEN PEOPLE$(I) = NAME$: RETURN
15400 I = I +1: IF I >4 THEN PRINT "MORE PEOPLE ON FILE,": PRINT "THEN ROOM IN ARRAYS": END
15500 GOTO 15200